#include "taskQueue.h"

// 任务队列初始化
int taskQueueInit(taskQueue_t *pqueue)
{
    bzero(pqueue,sizeof(taskQueue_t));
    return 0;
}

// 入队
int enQueue(taskQueue_t *pqueue,int netfd)
{
    node_t * pNew = (node_t *)calloc(1,sizeof(node_t));// pNew = NULL
    pNew->netfd = netfd;
    // 当队列没有元素的时候，入队会改变队头与队尾指针
    if(pqueue->queueSize == 0)
    {
        pqueue->pFront = pNew;
        pqueue->pRear = pNew;
    }else{
        pqueue->pRear->pNext = pNew;
        pqueue->pRear = pNew;
    }
    ++pqueue->queueSize;
    return 0;
}
// 出队
int deQueue(taskQueue_t *pqueue)
{
    node_t *pCur = pqueue->pFront;
    pqueue->pFront = pCur->pNext;
    // 当队列只有一个元素的时候，出队会同时改变队头与队尾指针
    if(pqueue->queueSize == 1)
    {
        pqueue->pRear = NULL;
    }
    free(pCur);
    --pqueue->queueSize;
    return 0;
}
